const mysql = require('mysql2/promise');

// 数据库连接配置
const dbConfig = {
  host: 'localhost',
  user: 'root',
  password: 'root',
  database: 'community_service_platform',
  port: 3306
};

async function testDatabase() {
  try {
    console.log('🔍 开始测试数据库连接和数据...');
    // 创建连接
    const connection = await mysql.createConnection(dbConfig);
    console.log('✅ 数据库连接成功！');

    // 检查数据库是否存在
    const [dbResult] = await connection.execute('SELECT DATABASE() as db_name');
    console.log(`📊 当前数据库: ${dbResult[0].db_name}`);

    // 检查表是否存在
    console.log('\n📋 检查必要的表是否存在:');
    const requiredTables = ['idle_items', 'skills', 'users'];
    const [tables] = await connection.execute('SHOW TABLES');
    const tableNames = tables.map(table => Object.values(table)[0]);

    requiredTables.forEach(table => {
      if (tableNames.includes(table)) {
        console.log(`✅ 表 ${table} 存在`);
      } else {
        console.log(`❌ 表 ${table} 不存在`);
      }
    });

    // 检查idle_items表结构和数据
    console.log('\n🔍 检查idle_items表结构和数据:');
    if (tableNames.includes('idle_items')) {
      // 查看表结构
      const [columns] = await connection.execute('DESCRIBE idle_items');
      console.log('📝 表结构:');
      columns.forEach(col => {
        console.log(`   - ${col.Field}: ${col.Type} ${col.Null === 'YES' ? '(可空)' : '(非空)'}`);
      });

      // 查看数据
      const [data] = await connection.execute('SELECT COUNT(*) as count FROM idle_items');
      console.log(`📊 数据条数: ${data[0].count}`);

      if (data[0].count > 0) {
        const [sampleData] = await connection.execute('SELECT * FROM idle_items LIMIT 3');
        console.log('📄 示例数据:');
        sampleData.forEach((row, index) => {
          console.log(`   记录 ${index + 1}:`);
          Object.entries(row).forEach(([key, value]) => {
            console.log(`      ${key}: ${value}`);
          });
        });
      } else {
        console.log('⚠️ 警告: idle_items表中没有数据');
      }

      // 检查状态字段值分布
      const [statusCounts] = await connection.execute('SELECT status, COUNT(*) as count FROM idle_items GROUP BY status');
      console.log('📊 状态分布:');
      statusCounts.forEach(item => {
        console.log(`   - ${item.status}: ${item.count} 条`);
      });
    }

    // 检查API查询条件
    console.log('\n🔍 检查API查询条件:');
    console.log('提示: 查看server.js中的API路由，特别是闲置物品列表接口(/api/idle-items)');
    console.log('注意: 如果API中设置了状态过滤(如只查询status=approved的数据)，而表中数据状态不符合，也会导致无数据显示');

    await connection.end();
    console.log('\n✅ 数据库测试完成！');

  } catch (error) {
    console.error('❌ 数据库测试失败:', error.message);
    console.error('请检查以下配置:');
    console.error('1. MySQL服务是否启动');
    console.error('2. 数据库连接信息是否正确');
    console.error('3. 数据库和表是否存在');
  }
}

testDatabase();